/******************************************************
Cours : LOG210
Session : H2012
Groupe : 02
Équipe : 03
Projet : Laboratoire #1
Étudiant(e)(s) : Philippe Nichols
                 Dalin Son
                 Nicholas Lefebvre
                 Jean-Philippe Chapdelaine
Code(s) perm. : NICP29109007
                SOND05099000
                LEFN06078909
                CHAJ13099001
Professeur : François Caron
Chargé de labo : Jean-Philippe Martin
Nom du fichier : Gui.java
Date créé : 2012-01-25
Date dern. modif. 2012-01-25
*******************************************************
Historique des modifications
*******************************************************
2012-01-25 Création de la classe
*******************************************************/

package vue;

/*
 * Username = client
 * pass = client
 * 
 * Username = livreur
 * pass =livreur
 */
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.UIManager;

import controleur.ControleurMenu;

public class Gui extends JFrame {
	private static final long serialVersionUID = -1287205613375766601L; // Généré pour enlever un warning
	private static final int MARGE_X = 4;
    private static final int MARGE_Y = 47;
    private static final String TITRE_ECRAN = "title";
    
    private ControleurMenu controleurMenu = new ControleurMenu();
    private VueConnection vueConnection = new VueConnection(this);
    
    private JMenuBar jMenuBar = new JMenuBar();
    private MenuFichier menuFichier;
    private MenuAide menuAide;

    /**
     * Initialise le look and feel par celui du système et ajoute tout les élements de la fenêtre
     */
    public Gui()
    {
        try
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            jbInit();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * Fonction initialisant la fenêtre.
     * @throws Exception en cas d'erreur
     */
    private void jbInit()
      throws Exception
    {
    	// Ajoute le nom de l'écran et quelque opération supplémentaire
        this.getContentPane().setLayout(null);
        this.setResizable(false);
        this.setTitle(Localisation.getResource(TITRE_ECRAN));
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        
        // Créé tout les menus
        this.creerMenu();
        
        // ajoute la première vue dans le frame et l'initialise
        // plutôt controleurConnection mais plus le temps bye!!
        vueConnection.init(controleurMenu);
        
        // change la taille de l'application, +MARGE_X et Y pour ajouter la taille du menu et des côtés
        this.setSize(vueConnection.getWidth()+MARGE_X, vueConnection.getHeight()+MARGE_Y);
        
        // Pour centrer l'application
        Dimension dimScreen = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (int)dimScreen.getWidth()/2 - this.getWidth()/2;
        int y = (int)dimScreen.getHeight()/2 - this.getHeight()/2;
        this.setLocation(x,y);
    }
    
    /**
     * Fonction créant le menu.
     */
    private void creerMenu()
    {
        this.setJMenuBar(jMenuBar);
        menuFichier = new MenuFichier(controleurMenu);
        menuAide = new MenuAide(controleurMenu);
        jMenuBar.add(menuFichier);
        jMenuBar.add(menuAide);
    }

    public static void main(String[] args)
    {
        Gui gui = new Gui();
        gui.setVisible(true);
    }
}
